#Makeindex

Eine Liste von Elementen sortieren und aufteilen um einen Index zu erzeugen.

#Kindelemente

(keine)

#Elternelemente

Element, SaveDataset

#Attribute

pagenumber (Text, optional, seit Version 2.7.11)

Der Name des Attributs der die Seitenzahl enthält. Voreinstellung ist 'page'.

section (Text)

Erzeuge ein XML-Element mit diesem Namen für jeden Abschnitt (Buchstabe) in dem Index.

select (XPath-Ausdruck)

Der XPath-Ausdruck der die Elementstruktur für den Index enthält ($Variable).

sortkey (Text)

Der Name des Attributs das den Indexeintrag enthält (der sortiert werden soll).

#Beispiel

Die Indexerstellung funktioniert in zwei Schritten. Im ersten Schritt werden die Daten in eine Elementstruktur gespeichert und mit diesem Befehl sortiert. Im zweiten Schritt wird die Elementstruktur ausgegeben (LoadDataset).

<Layout xmlns="urn:speedata.de:2009/publisher/en"
	xmlns:sd="urn:speedata:2009/publisher/functions/en">

	<Record element="data">
		<SetVariable variable="indexeinträge">
			<Element name="indexeintrag">
				<Attribute name="name" select="'Giraffe'" />
				<Attribute name="page" select="1" />
			</Element>
			<Element name="indexeintrag">
				<Attribute name="name" select="'Garage'" />
				<Attribute name="page" select="2" />
			</Element>
			<Element name="indexeintrag">
				<Attribute name="name" select="'Grußwort'" />
				<Attribute name="page" select="3" />
			</Element>
			<Element name="indexeintrag">
				<Attribute name="name" select="'Aufzug'" />
				<Attribute name="page" select="4" />
			</Element>
		</SetVariable>

		<SetVariable variable="index">
			<Element name="Index">
				<Makeindex select="$indexeinträge/indexeintrag" sortkey="name" section="teil" />
			</Element>
		</SetVariable>
		<ProcessNode select="$index/Index"></ProcessNode>
	</Record>

	<Record element="Index">
		<ForAll select="teil">
			<PlaceObject>
				<Table width="3" stretch="max">
					<Tr>
						<Td border-bottom="0.4pt" colspan="2">
							<Paragraph>
								<Value select="@name" />
							</Paragraph>
						</Td>
					</Tr>
					<ForAll select="indexeintrag">
						<Tr>
							<Td>
								<Paragraph>
									<Value select="@name" />
								</Paragraph>
							</Td>
							<Td>
								<Paragraph>
									<Value select="@page" />
								</Paragraph>
							</Td>
						</Tr>
					</ForAll>
				</Table>
			</PlaceObject>
			<NextRow />
		</ForAll>
	</Record>
</Layout>

#Siehe auch

Das Kapitel Stichwortverzeichnisse.